package bz.ziro.kanbe.dao;

import java.util.List;

import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Key;

import bz.ziro.kanbe.bean.Pager;
import bz.ziro.kanbe.meta.LogMeta;
import bz.ziro.kanbe.model.Log;
import bz.ziro.kanbe.util.KeyFactory;

/**
 * ログDao
 * @author Administrator
 */
public class LogDao extends BaseDao<Log> {

	/**
	 * メタデータ
	 */
    private static final LogMeta logMeta = new LogMeta();

    /**
     * ログ検索
     * @param aKey
     * @return
     */
    public static Log find(Long aKey) {
        Key key = KeyFactory.createLogKey(aKey);
        return Datastore.query(logMeta)
        		.filter(
        			logMeta.key.equal(key)
        		).asSingle();
    }

    /**
     * 削除
     * @param aKey
     */
    public static void delete(Long aKey) {
        Key key = KeyFactory.createLogKey(aKey);
        Datastore.delete(key);
    }

    /**
     * ページャー検索
     * @param aSiteKey
     * @param offset
     * @param limit
     * @return
     */
    public static List<Log> findPageList(Long aSiteKey,Pager pager) {
    	Key siteKey = KeyFactory.createSiteKey(aSiteKey);
        //ページのデータを取得
        return  Datastore.query(logMeta)
        			.filter(
        				logMeta.siteKey.equal(siteKey)
        			).offset(pager.getOffset()).limit(pager.getLimit())
        			.sort(logMeta.createDate.desc).asList();
    }

    /**
     * カウント
     * @return
     */
    public static int count(Long siteLngKey) {
    	Key siteKey = KeyFactory.createSiteKey(siteLngKey);
        return Datastore.query(logMeta)
        		.filter(
        			logMeta.siteKey.equal(siteKey)
        		).count();
    }

}
